// 给定一个大小为m*n的矩阵mat，以对角线遍历的顺序，用一个数组返回这个矩阵的所有元素
// 思路，定义行索引x = 0， 列索引y = 0，规律是
// 1. 当行索引 + 列索引的和为偶数时，遍历方向是从左下到右上，行索引减一 x--，列索引加一y++
//         如果遇到第一行，列索引加一，y++
//         如果遇到最后一列，行索引加一，x++
// 2. 当行索引 + 列索引的和为奇数时，遍历方向是从右上到左下，行索引加一 x++，列索引减一y--
//         如果遇到第一列，行索引加一，x++
//         如果遇到最后一行，列索引加一,y++

function findDiagonalOrder(mat) {
    let rowLength = mat.length
    let colLength = mat[0].length
    let count = rowLength * colLength
    let x = 0
    let y = 0
    let ans = []
    for (let i = 0; i < count; i++) {
        ans.push(mat[x][y])
        // 从左下到右上
        if ((x + y) % 2 === 0) {
            // 先判断列，判断不为0的
            if (y === colLength - 1) {
                // 最后一列
                x++
            } else if (x === 0) {
                // 第一行
                y++
            } else {
                x--
                y++
            }
        } else {
            // 先判断不为0的
            if (x === rowLength - 1) {
                //最后一行
                y++
            } else if (y === 0) {
                // 第一列
                x++
            } else {
                x++
                y--
            }
        }
    }
    return ans
}

let mat = [[1, 2, 3], [4, 5, 6]]
let mat2 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

mat =
    [[1, 2], [3, 4]]
console.log(findDiagonalOrder(mat2));